Traditional enterprise services rely on stateful enterprise applications that are designed to serve a limited number of users in a single tenant environment. Generally, a “stateful” application refers to an application that is designed to track sessions. The use of stateful enterprise applications to provide enterprise services is inefficient for large-scale systems because each time a request for a business object is made, a network hit is required to retrieve the business object from a particular instance of an enterprise application that is configured to serve the request. The enterprise application that handles the request can be easily overloaded. Currently, each instance or session can handle about 10,000 users, but in a cloud environment, millions of users are served.
One solution to scale stateful enterprise services to serve a large number of users is to replicate copies of a single instance of an enterprise application such that the copies of the instance can also handle the requests. However, such session replication is time-consuming, and after replication, all the copies of the instances need to be synchronized periodically, which can cause delays in the retrieval of data. Another solution is to redesign each stateful enterprise application to be stateless, but the redesign and implementation of a stateless enterprise system can be time-consuming, labor-intensive, and generally just not practical when a large number of stateless enterprise applications have been deployed.